﻿using MangoMes.Commont.DapperHelps;
using MangoMes.Commont.Domain.Productions;
using MangoMes.Commont.DTOs;
using MangoMes.Commont.Infrastructures.Interfaces;
using MediatR;
using NPOI.SS.Formula.Functions;
using NPOI.Util;

namespace MangoMes.Write.API.Applications.Pickinges
{
    public class ProdlineCreateHandler : IRequestHandler<ProdlineCreateCommand, ResultsDTO>
    {
        #region 仓储
        private readonly IBateRepository<Prodline> ProdlineRepository;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="ProdlineRepository"></param>
        public ProdlineCreateHandler(IBateRepository<Prodline> ProdlineRepository)
        {
            this.ProdlineRepository = ProdlineRepository;
        }
        #endregion


        #region 生产领料单行 新增
        /// <summary>
        /// 生产领料单行 新增
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task<ResultsDTO> Handle(ProdlineCreateCommand request, CancellationToken cancellationToken)
        {
            //异常处理
            try
            {
                //初始化一个ResultDTO对象result，并设置Code为 0
                ResultsDTO result = new ResultsDTO() { Code = 0 };
                //创建DapperHelper对象 用于与数据库进行交互
                DapperHelper helper = new DapperHelper();
                //创建新实例 prodline 通过对象初始化器的方式定义一些属性赋值
                Prodline prodline = new Prodline()
                {
                    ProdLineId = request.ProdLineId, //主键ID
                    ProductManageNode = request.ProductManageNode, //产品物料编码
                    ProductManageName = request.ProductManageName, //产品物料名称
                    ProductManageNumber = request.ProductManageNumber, //规格型号
                    Unites = request.Unites, //单位
                    ProdeCount = request.ProdeCount, //领料数量
                    ProdLot = request.ProdLot, //批次号
                    StashId = request.StashId, //仓库id
                    Remarks = request.Remarks, //备注
                    PickingNode = request.PickingNode,
                    ProdLineState = request.ProdLineState,
                };

                //连接mySql 
                string conn = "server=112.124.69.237;port=3306;uid=root;pwd=No6123666;database=MangoMesDB";

                //sql语句
                string str = "insert into prodline values(@ProdLineId,@ProductManageNode,@ProductManageName,@ProductManageNumber,@Unites,@ProdeCount,@ProdLot,@StashId,@Remarks,@PickingNode,@ProdLineState)";

                result.Code = await ProdlineRepository.Add(str, prodline, conn);
                result.Message = "生产领料单行 新增成功";

                return result;
            }
            catch (Exception)
            {

                throw;
            }
        }
        #endregion

    }
}
